קורס תוכנת מטלב ויישומיה שיעור מס' 10: תכנות ממשקי משתמש

Similar documents
טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

ASP.Net MVC + Entity Framework Code First.


המבנה הגאומטרי של מידה

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

SPSS 10.0 FOR WINDOWS

קורס מטלב לפיסיקאים שיעור מס' 10: משתנים מורכבים

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

מבוא למחשב בשפת פייתון

מבוא לתכנות ב- JAVA תרגול 7

כפתור רדיו בחירה בודדת מתוך רשימת אפשרויות

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

מדריך למשתמש התקנה עצמית

זו מערכת ישרת זוית )קרטזית( אשר בה יש לנו 2 צירים מאונכים זה לזה. באותו מישור ניתן להגדיר נקודה על ידי זוית ורדיוס וקטור

פקס בחיבור המכשיר המשולב לפקס יש לעבור על השלבים הבאים: - חבר את כבל הטלפון לחיבור ה- LINE בגב המדפסת ואת צידו השני לשקע הטלפון בקיר.

A R E Y O U R E A L L Y A W A K E?

Patents Basics. Yehuda Binder. (For copies contact:

Practical Session No. 13 Amortized Analysis, Union/Find

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

המחלקה למדעי המחשב, אוניברסיטת בן גוריון מבני נתונים, סמסטר אביב 2102 עבודת בית מספר - 2 מעשית

Visual C# Express Edition 2005

ל"תוכנה" שכותבים, כמו פונקציה זו, קוראים "קוד"

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

State Pattern מימוש מכונת מצבים (FSM) מבוא בעיה תמיכה ועדכונים עדכון מס' 48 מאי 2002

בוחן בתכנות בשפת C בצלחה

תרגול 8. Hash Tables

מנגנון 5522 מידע על המנגנון מצב תצוגת שעה

מדריך שימוש בדואר האלקטרוני

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of

מדריך למשתמש התקנה עצמית

זה. Nir Adar

מבחן באנגלית בהצלחה הצלחה!!! שם פרטי: שם משפחה: מס' תעודת זהות: תאריך: שם מרכז מנהל מרכז השכלה: תאריך בדיקת המבחן: כל הזכויות שמורות למשרד החינוך

מדריך לניהול VPS טריפל סי מחשוב ענן בע"מ.

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

סדנת יסודות מטלב שיעור מס' 6: ארגון, מיון ועיבוד נתונים

מדריך מקוצר Microsoft Office Word 2007

לשרטוט חשמלי בתוכנת OrCad-Capture

מדריך למשתמש בשירות. yes MultiRoom

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר

הבינגמה הדובע תביבסב תונכתל ריהמ ךירדמ

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

פרוטוקול HTTP הפונקציה header שליחת מידע דחוס. עבודה עם cookies Haim Michael. All Rights Reserved.

מבוא לשפת C מבוא לשפת סי - תירגול 1

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

sharing food intro price & extra drinks * ניתן להזמין מנות כשרות בתאום מראש for good memories

Redirection The Input Buffer

Visual C# Express יסודות מדעי המחשב 1 מהדורת עיצוב תשס"ו 2006 כתבה: יעל בילצ'יק (סופרין)

איתור במחסן הוא יחידת המרחב הקטנה ביותר שניתן להתייחס אליה, במחסן שבו מאוחסנות הסחורות שלך. מחסנים שורה 1 שורה 2 שורה 3

Depth-First Search DFS

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

פרק מיון וחיפוש - לשם מה? הגדרה

Structural Vs. Nominal Typing

מבוא לשפת C תירגול 1: מבוא מבוא לשפת סי - תירגול 1

Theories of Justice

ANNEXURE "E1-1" FORM OF IRREVOCABLE STANDBY LETTER OF CREDIT PERFORMANCE OF CONTRACT (WHERE PRICES ARE NOT LINKED TO AN ESCALATION FORMULA)

שילוב אנימציה באתר תזוזת אלמנט לפי טיימר ולוח צירים

הטכנולוגיה בחינוך ד ר קובי גל אוניברסיטת בן גוריון בנגב

THINKING ABOUT REST THE ORIGIN OF SHABBOS

מדריך המוצר של GFI מסייע ארכיו ן

דיאגרמה לתיאור Classes

מושגים בסיסיים תלמידים והורים יקרים,

Apple, keys, pen, pencils, pencilbox,(toy)elephant,( toy) boy, (toy) girl, ball

Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

מדור מערכות מידע פיננסיות

עד כה עסקנו בתוכניות שמתקדמות פקודה אחרי פקודה העתק ל- ax את הערך 3 העתק ל- bx את הערך 4 הוסף ל- ax את bx כפול את התוצאה ב- 2 והעתק ל- cx

ניסוי בפייתון מכון טכנולוגי לישראל הניסוי מתקיים בבניין פישבך, חדר 573 )במסדרון למאייר(. המאחר ביותר מ- 53 דקות לא יורשה לבצע את הניסוי.

ASTM UL / FM / BS abesco

אנגלית (MODULE E) בהצלחה!

שאלון ד' הוראות לנבחן

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

/ פתיחת החשבון הכרחית רק למרצה / מתרגל ונעשית רק בעת הכניסה הראשונה.

מבוא לאסמבלי מאת אופיר בק חלקים נרחבים ממאמר זה נכתבו בהשראת הספר "ארגון המחשב ושפת סף" אשר נכתב ע"י ברק גונן לתוכנית גבהים של משרד החינוך.

פרק עצמים א. טיפוסים חדשים ב. מצב של עצם

Parts of Speech

סיכומים למבחן בקומפילציה

שאלון ו' הוראות לנבחן

אנגלית שאלון ז' ג רסה א' הוראות לנבחן בהצלחה! )4( ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד. (MODULE G)

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

פרק מחלקות ממשק המחלקה צריך גם לדעת להגדיר בתוכניתו מחלקות לפי הצורך. בפרק זה נלמד להגדיר מחלקה ולממשה על סמך ממשק נתון.

פרק יעילות היעילות של קריטריון המקום עוסק בנושאים דומים לאלה של קריטריון הזמן. אנו נתרכז בחישובי היעילות של מדד הזמן.

בהגדרות ה AP..connections

הכרת ה- SPSS, הכנסה והגדרה של משתנים

מדריך שימוש והתקנה של office

מבוא למחשב בשפת Matlab

Genetic Tests for Partners of CF patients

1.1. הקדמה (דיסק). מדריכי. (מחיצות) Link

א נ ג ל י ת בהצלחה! ב. משרד החינוך בגרות לנבחנים אקסטרניים )מילון הראפס אנגלי-אנגלי-ערבי( השימוש במילון אחר טעון אישור הפיקוח על הוראת האנגלית.

הגדרות טלפון פוליקום בקישור הבא יש טבלה מסודרת שבה מופיעים כל סוגי הטלפון ולאיזה גירסא ניתן לשדרג

מערכים Haim Michael. All Rights Reserved.

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון ב' Corresponds with Module B גרסה ב' הוראות לנבחן

SHABBOS, 10 TAMMUZ, 5778

תכנות בטוח חלק ב ' מאת עידו קנר

אוניברסיטת בן גוריון בנגב

מטוסים נופלים, כורים מתפוצצים זיכרון אוטומטי מקטסטרופות לומדים בניינים קורסים,

Transcription:

תכנות מונחה-אירועים שיעור מס' 10: תכנות ממשקי משתמש תכנות סדרתי סדר ביצוע הפקודות נקבע ע"י קוד התוכנית. תכנות מונחה-אירועים סדר ביצוע הפקודות נקבע ע"י אירועים בסביבה (למשל פעולות של המשתמש). קלט מן הסביבה נעשה באופן יזום ע"י התוכנית. במקרים בהם מבקשים קלט ממשתמש, התוכנית עוצרת את הביצוע עד לקבלת הקלט. (כפי שמתבצע בשיעור 8 דוגמא 4.(d8curve_select המעבד פעיל כל זמן שהתוכנית מתבצעת (גם כאשר התוכנית עוצרת לקבלת קלט מן המשתמש או כל עצירה אחרת, למשל הסביבה יוזמת אירועים שמועברים למחשב באמצעות פסיקה.(interrupt) לכל סוג פסיקה משויכת תוכנית שמופעלת כאשר מגיעה פסיקה מסוג זה. המעבד פעיל רק כאשר מתבצעת תוכנית- פסיקה. פקודת.(pause התלות של מהלך התוכנית במשתנים סביבתיים (למשל סוגים שונים של קלט) נקבעת מראש ע"י התוכנית, בד"כ באמצעות משתנים סביבתיים משפיעים על מהלך הטיפול באירועים. פקודות התנייה. ממשק-משתמש הוא מקרה פרטי של תכנות מונחה-אירועים. האירועים הם הקשה על אחד מכפתורי העכבר או המקלדת, כאשר הסמן נמצא על עצם גרפי מסוים. בדרך כלל תוכנית לממשק משתמש בנויה באופן הבא: התוכנית הראשית כוללת פקודות היוצרות את העצמים המרכיבים את הממשק, ובהתאם לצורך גם מאתחלת פרמטרים או ערכי ברירת מחדל. התוכנית הראשית מסתיימת, ובמטלב הבקרה חוזרת לחלון-הפקודות. לכל עצם גרפי ניתן לשייך פונקציה שתתבצע כאשר יקרה אירוע הקשור לעצם. פונקציה זו נקראת CallBack (קריאה- לאחור). שיוך הפונקציות האלה לעצמים הגרפים בממשק נעשה בשלב האתחול (התוכנית הראשית) ע"י ציון תכונות העצם הרלוונטיות. לאחר שהתוכנית הראשית סיימה, אפשר להשתמש בממשק כל עוד החלון הגרפי פתוח. הקשה על העצמים בחלון שהוגדרו כפעילים תפעיל את פונקציות ה- CallBack שהוגדרו וכך יתבצע האלגוריתם המבוקש. המעבד פעיל רק כאשר מתבצעות פונקציות.CallBack דוגמא 1: הפונקציה d10save_plot מופעלת כאשר יש חלון גרפי פתוח עם שרטוט קיים. המטרה היא לצפות בשרטוט במספר צורות של הגדלה ו/או הזזה ולשמור חלק מן התצוגות, כל אחת מהן בקובץ נפרד בשמות סדרתיים. הפונקציה הראשית משייכת לצירים פונקציית-תגובה להקשה על הצירים, וכן מאתחלת מונה עבור שמות הקבצים ומסתיימת. המשתמש משנה את התצוגה ומקיש עם העכבר על שטח הצירים בכל פעם שרוצה לשמור את התצוגה. פונקציית התגובה שומרת את הפלוט לקובץ ומקדמת את המונה. הסקריפט d10plot מבקש מן המשתמש לבחור קובץ הקלטה ומבצע את הדברים הבאים: קורא את הקובץ, מציג אותו בגרף ומפעיל את.d10save_plot עמ' 1 מתוך 6

סוגי אירועים ButtonDownFcn KeyPressFcn KeyReleaseFcn CreateFcn DeleteFcn ResizeFcn CloseRequestFcn WindowButtonDownFcn WindowButtonUpFcn WindowButtonMotionFcn WindowScrollWheelFcn WindowKeyPressFcn WindowKeyReleaseFcn CurrentCharacter SelectionType CurrentPoint התכונות הבאות משייכות פונקציה לעצם גרפי, כאשר קורים האירועים הבאים: לחיצה על אחד מכפתורי העכבר כאשר הסמן נמצא מעל העצם לחיצה על מקש/ים במקלדת כאשר הסמן נמצא מעל העצם שחרור מקש/ים במקלדת כאשר הסמן נמצא מעל העצם יצירת העצם. (שימושי להגדרת תכונות ברירת-מחדל) מחיקת העצם. (שימושי לשמירת מידע לפני שהעצם נעלם). שינוי ממדי העצם. (שימושי כאשר שינוי ממדים מחייב שינויי עיצוב). התכונות הבאות רלוונטיות רק לחלון גרפי :(figure) ניסיון לסגור את החלון (למשל ע"י הקשה על צלמית הסגירה). לחיצה על אחד מכפתורי העכבר כאשר הסמן נמצא מעל החלון שחרור אחד מכפתורי העכבר כאשר הסמן נמצא מעל החלון תנועה של הסמן כשהוא נמצא מעל החלון שימוש בגלגל הגלילה בעכבר כאשר הסמן נמצא מעל החלון לחיצה על מקש/ים במקלדת כאשר הסמן נמצא מעל החלון שחרור מקש/ים במקלדת כאשר הסמן נמצא מעל החלון אפשר לקבל מידע נוסף על האירוע באמצעות התכונות הבאות: שם המקש במקלדת שהוקש לאחרונה כאשר הסמן היה מעל העצם שם כפתור העכבר שהוקש כאשר הסמן היה מעל העצם. מקרים נפוצים הם normal עבור כפתור שמאלי, alt עבור כפתור ימני. קואורדינטות הנקודה שבה הוקש על כפתור העכבר כאשר הסמן היה מעל העצם. המספרים ביחידות של העצם (ברירת המחדל היא pixel עבור חלון ו- data coordinates עבור מערכת צירים). קוד עבור callback 'MATLAB code' function-handle hobject EventStructure Character Key Modifier הקוד עבור תכונת callback (שיתבצע כשיקרה אירוע) יכול להיות אחד משני הדברים הבאים: א. מחרוזת תווים שמטלב מבצע כאילו הוקלדה בחלון הפקודות. אם המחרוזת כוללת שמות של פונקציה או סקריפט, מטלב מבצע (במידה וזיהה את התוכנית המבוקשת). אם יש שמות שזוהו כמשתנים במרחב-העבודה הכללי של מטלב, יילקחו הערכים השמורים במשתנים אלה. ב. מזהה לפונקציה, שמטלב מפעיל עם שני הארגומנטים הבאים: 1. מזהה handle של העצם שבו קרה האירוע. 2. מידע על האירוע.(structure) למשל, אירועים הקשורים במקלדת כוללים את השדות הבאים: התו כפי שמוצג כתוצאה של כלל המקשים. (למשל.(A=a+SHIFT שם המקש (אות קטנה,lowre case או שם עבור מקשים אחרים). מערך-תאים עם שמות המקשים הנוספים shift).(control, alt, עמ' 2 מתוך 6

function cb(h,ev) לסיכום, שורת הכותרת בפונקציית callback תיראה כך: בדרך כלל המזהה h שימושי, ואילו המידע על האירוע (בארגומנט (ev פחות משמעותי. בכל מקרה יש לשמור על התבנית של שני ארגומנטים. ניתן להעביר לפונקציה ארגומנטים נוספים, באופן הבא: מגדירים עבור תכונת callback מערך-תאים, אשר התא הראשון בו הוא function-handle והתאים הבאים מכילים את ערכי הארגומנטים הנוספים לפונקציה. בכל פעם שמטלב יפעיל את הפונקציה, יועברו אליה שני הארגומנטים הסטנדרטיים ובהמשך הארגומנטים ממערך-התאים. מומלץ להשתמש תמיד בפונקציות (אפשרות ב' למעלה) ולא במנגנון של סקריפט עם משתנים במרחב העבודה הכללי. דוגמא 2: התוכנית d10draw_curves מבצעת ממשק המאפשר למשתמש לציין קואודינטות ולשרטט קווים שבורים בעזרת העכבר. בכל קטע מוצג תחילה קו מרוסק העוקב אחרי תנועת העכבר, ואשר הופך ל"קבוע" לאחר לחיצה על כפתור שמאלי. לחיצה על כפתור ימני מסיימת את הקו השבור כך שלחיצה נוספת על כפתור שמאלי מתחילה קו חדש. הקובץ כולל פונקציה ראשית ושתי פונקציות :callback אחת לתגובה על הקשה על כפתור עכבר ואחת לתגובה על תנועת עכבר. עצמים לממשק-משתמש במטלב יש עצמים מוגדרים-מראש לצורך בניית ממשקי משתמש. (אפשר לבנות ממשק גם מעצמים גרפיים פשוטים, אבל כמובן בעבודה רבה יותר). בניגוד לכלי ממשק שהודגמו עד כה (לדוגמא חלון-תפריט, תיבת דיאלוג או תיבה לבחירת קובץ), עצמים אלה הם חלק מן החלון הגרפי הקיים (כלומר "ילדים" של ה- figure ). לעצמים אלה יש עיצוב גרפי נתון (אשר ניתן לשלוט על הפרמטרים שלו) וכן התנהגות נתונה. ניתן לשנות במידה מסוימת את התנהגות עצמים אלה, אבל המאפיינים הבסיסיים שלהם נקבעו לצורך שימוש בהתנהגות הנתונה. עצמים לממשק משתמש מתחלקים לשני קבוצות עיקריות: UImenu ו- UIcontrol. עצמים מסוג UImenu הם תפריטים שנמצאים בסרגל התפריטים בראש החלון. בשיעור זה נתאר עצמים מסוג,Uicontrol שיכולים להיות בכל מקום בשטח שמתחת לסרגל התפריטים. להלן כמה סוגים של :Uicontrol Uicontrol type PushButton ToggleButton CheckBox עיצוב העצם והתנהגותו כפתור לחיץ. נלחץ בלחיצה על כפתור עכבר ומשתחרר עם שחרור כפתור העכבר. לחיצה+שחרור של העכבר מפעילה.callback כפתור-מצבים. הקשה עם העכבר מעבירה אותו בין המצבים "בפנים" ו"בחוץ". כל הקשה מפעילה callback וניתן לבדוק באיזה מצב נמצא. תיבת "אישור". לחיצה עם העכבר מעבירה בין מצב "כן" (בו נמצא סימון בתיבה) למצב "לא" (בו התיבה ריקה) וכן מפעילה.callback עמ' 3 מתוך 6

Uicontrol type PopUpMenu Edit Slider Text עיצוב העצם והתנהגותו תפריט "קופץ". במצב לא פעיל, מוצג טקסט שהוא אחת מן האפשרויות. לחיצה בעכבר מציגה רשימה של האפשרויות שמהן בוחרים. בחירה מפעילה callback ומציגה באופן קבוע את האפשרות שנבחרה. כמו-כן ניתן לבדוק איזו אפשרות מוצגת. תיבת-טקסט. מאפשרת למשתמש לכתוב טקסט. כדי להפעיל,callback יש ללחוץ ENTER או להקיש עם העכבר מחוץ לשטח התיבה. (מומלץ לא להסתמך על כך ולספק גם כפתור הפעלה נפרד). מתג-הזזה. ניתן להזיזו בעזרת העכבר. מקום המתג "מתורגם" לערך מספרי, כאשר מגדירים מראש גבולות מינימום (צד שמאל) ומקסימום (צד ימין). שחרור של כפתור העכבר עוצר את תנועת המתג וכן מפעיל,callback וניתן לקבל את הערך המספרי. טקסט סטטי. לא ניתן לשינוי ע"י המשתמש ולא מפעיל.callback מיועד להצגת כותרות, משוב וכו'. יצירת UIcontrol hndl=uicontrol('type',type,'p1',v1,'p2',v2) Hs=uicontrol('type','slider','min',-3) uicontrol(uihandle) יצירת עצם,UIcontrol כאשר ציון סוג העצם נעשה ע"י תכונת.type דוגמא: העברת הפוקוס לעצם קיים עם מזהה נתון: תכונות רלוונטיות לעצמים מסוג Uicontrol Enable התכונות הבאות משותפות לכל העצמים מסוג UIcontrol אבל משמעותן משתנה בהתאם לסוג העצם: העצם פעיל אם,on לא פעיל אם.off במקרה של off מטלב משנה באופן אוטומטי את חזות העצם (צבעים חוורים לטקסט ורקע). Value ערך מספרי. לגבי,slider ערך בהתאם למקום המתג. לגבי,popupmenu מספר האפשרות שנבחרה. לגבי עצמים מסוג כן/לא, מקבל ערך Max אם נבחר וערך Min אם לא נבחר. String מחרוזת תווים - בהתאם להקשר: טקסט על כפתור, טקסט המוצג בתיבת עריכה, אפשרויות של תפריט (מערך תאים). Min Max SliderStep ForegroundColor BackgroundColor ערכים מספריים. לגבי slider מציין את הערכים המשויכים לגבולות בהם המתג יכול לנוע, לגבי עצמים של כן/לא, כמוסבר למעלה. צעדי-התקדמות של slider (מערך של שני איברים כמוסבר בתיעוד). צבע טקסט. צבע רקע. למידע על סוגי Uicontrol נוספים ותכונות נוספות, יש לחפש בתיעוד.uicontrol propoerties דוגמא 3: התוכנית d10curve_select מבצעת ממשק המאפשר למשתמש לבחור בלחיצת-עכבר עקומות מסוימות מתוך המידע הגולמי. כל עקומה שנבחרת מסומנת בקו עבה. בחירת עקומה אחרת "מסירה את הבחירה" מהעקומה שנבחרה קודם. עם הלחיצה על כפתור Confirm מאושרת בחירת העקומה, והיא מועלמת מהמידע הגולמי (כדי למנוע בחירה חוזרת) ומשורטטת במערכת-הצירים של העקומות שנבחרו. כמו-כן קיימים שלושה :sliders אחד להזזה אופקית, אחד להזזה אנכית, ואחד להתקרבות. עמ' 4 מתוך 6

שיטות להעברת מידע בין הפונקציות בדרך כלל פונקציית callback משתמשת במידע שאיננו קשור רק לעצם שהפעיל אותה. בנוסף, עצמים שונים קולטים מידע (למשל פרמטרים לחישוב, שמות קבצים לקריאה או לשמירה) שמיועד לשימוש כלל חלקי התוכנית. כאמור למעלה, רצוי להימנע ממשתנים גלובאליים, ולכן יש להשתמש באחת מן השיטות הבאות: הגדרת כל הפונקציות המשתפות מידע כפונקציות פנימיות של התוכנית הראשית. באופן זה, משתנים 1. משותפים נגישים לכל הפונקציות שמשתמשות בהם ועדכון באחת מהן משתקף אוטומטית בכל היתר. (כפי שנעשה בדוגמאות 2-3). ציון ארגומנטים נוספים בשלב הגדרת פונקציית ה- callback (ע"י מערך-תאים). 2. set(h,'userdata',mydata) Mydata = get(h,'userdata'); שיוך המידע המשותף לתכונת UserData של אחד העצמים, כפי שנעשה בדוגמא 1..3 giudata(h,mydata) Mydata = guidata; שימוש בתכונת :guidata משתנה אחד שניתן לשייכו לחלון גרפי מסוים. 4. setappdata(h,'p1',v1) setappdata(h,'p2',v2) v1 = getappdata('p1') strc = getappdata(h) שימוש בעצם מסוג application data שניתן לשייכו לכל עצם גרפי (לא רק לחלון). ניתן לציין סדרת תכונות לפי הגדרת המתכנת, ולתת להן ערכים..5 לקבלת מזהים handles של עצמים שנוצרו באתחול, ניתן לציין עבורם תכונת.Tag עקרונית ניתן לאחזר 6. מזהה של כל עצם כזה ע"י חיפוש findobj לפי ערך התג. לנוחיות המתכנת, קיימת במטלב פקודה שמחזירה עבור חלון גרפי את כל המזהים שהוצמדו להם תגים, בתוך :structure strc = guihandles שמות התגיות הם שמות השדות, וערכי השדות הם המזהים שלהם משויכים התגים. עמ' 5 מתוך 6

(דוגמא 3). דוגמא 4: התוכנית d10curve_guidata מבצעת אותו ממשק משתמש כמו ב- d10curve_select פעולת התוכנית זהה לקודמת, למעט השינויים הבאים: כל פונקציות ה- callback הן פונקציות משניות (ולא פנימיות), ולכן אין להן משתנים משותפים. א. המידע מועבר בין הפונקציות באמצעות תכונת.guidata ב. מידע על מזהי-העצמים handles) (object מתקבל באמצעות פקודת guihandles לאחר שכל העצמים ג. הרלוונטיים לממשק המשתמש סומנו ע"י תגיות.Tags טיפול בתזמון אירועים מאחר שסדר ביצוע הפונקציות נקבע ע"י פעולות של המשתמש, יכול להיווצר מצב שאירוע קורה כאשר אחד מן ה- callbacks עדיין מתבצע. הסבירות למצב כזה גדלה, כאשר הביצוע כרוך בחישובים ארוכים או בכל פעולה מורכבת אחרת (למשל קליטת נתונים ממערכת חיצונית). במיוחד יכול להיווצר מצב לא מוגדר, שבו פעולה מתחילה להתבצע ב- callback ובינתים קורה אירוע נוסף המפעיל אותה מחדש. ככלל, כל עוד פונקציית callback מתבצעת באופן שוטף, לא מתאפשרת הפעלה של callback נוסף (גם לא של אותה פונקציה) ואירועים נוספים שקורים בינתים נשמרים ב"תור".(queue) לאחר שהפונקצייה מסיימת, מתבצעות הקריאות ל- callbacks שהושעו, לפי הסדר שבו נכנסו לתור. ניתן להפעיל פונקציה נוספת רק כאשר הפונקציה המתבצעת מגיעה לאחת הפקודות הבאות: figure, drawnow,.getframe, pause, waitfor במקרה זה, מתבצעות הפונקציות שבתור ולאחר שהן מסתיימות חוזרים לבצע את הפונקציה שהופסקה. תכונות רלוונטיות לטיפול בתזמון של אירועים המשויכים לעצם גרפי Interruptible BusyAction BeingDeleted hndl=gcbo hndl=gcbf אם on אז פונקציות אחרות יכולות להפסיק את ביצוע ה- callback המשויך לעצם (אבל רק אם יש בתוכנית אחת הפקודות שצוינו למעלה). אם off אז לא ניתן להפסיק את התוכנית. מה לעשות אם קורה אירוע המשויך לעצם ויש פונקציה אחרת שמתבצעת. אם queue אז האירוע נכנס לתור. אם cancel אז האירוע מבוטל. האם העצם נמצא בתהליך מחיקה (אשר יכול להתמשך אם משויך אליו callback שמבצע תהליך ארוך, למשל כתיבה לקובץ). פקודות רלוונטיות לטיפול בתזמון של אירועים המשויכים לעצם גרפי קבלת המזהה handle של העצם שה- callback שלו מתבצע עכשיו. אם אין callback שמתבצע, התוצאה היא מערך ריק. קבלת המזהה handle של החלון הכולל את העצם שה- callback שלו מתבצע עכשיו. עמ' 6 מתוך 6